package com.lqq.designPattern.bulider_pattern.singleton.demo7;

import java.io.Serializable;

/**
 * 静态内部类方式 懒汉式
 * 序列化反序列化破坏单例模式（除了枚举不能破坏）
 * */
public class Singleton implements Serializable {
    //构造器私有
    private Singleton() {}
    //静态内部类
    private static class SingletonHolder{
        //在内部类中声明并初始化外部类的对象
        private static final Singleton INSTANCE = new Singleton();
    }
    //提供一个公共的访问方式，让外界获取该对象
    public static Singleton getInstance() {
        return SingletonHolder.INSTANCE;
    }

    /**
     * 下面是为了解决序列化反序列化破解单例模式
     */
    private Object readResolve() {
        return SingletonHolder.INSTANCE;
    }
}
